package com.juqimiao.raccoon.commodity.domain.category;

import com.juqimiao.linn.domain.AggregatorI;
import com.juqimiao.linn.domain.DomainObject;
import com.juqimiao.linn.domain.Entity;
import com.sun.istack.internal.NotNull;
import lombok.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Collin Cai
 */
@Data
@DomainObject
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public class CategoryGroup extends Entity implements AggregatorI, Comparable<CategoryGroup> {

    private static final long serialVersionUID = 3485764738837L;


    private CategoryGroupPolicy policy;
    /**
     * 组名。
     */
    private String name;
    /**
     * 拼音首字母缩写。
     */
    private String spell;
    /**
     * 使用某一类Group的类型。
     * basic
     */
    private String groupType;
    /**
     * 使用场景。
     */
    private String scenario;
    /**
     * 是否发布。
     */
    private Boolean publish;
    /**
     * 是否通过认证。
     */
    private Boolean authorized;
    /**
     * 提交ID。 平台、一般用户提交。
     */
    private String submitId;
    /**
     * 排序次序。
     */
    private int sortOrder;

    private String status;
    /**
     * 子类目。
     */
    private List<Category> categories = new ArrayList<>();

    @Autowired
    public CategoryGroup(CategoryGroupPolicy policy) {
        this.policy = policy;
    }

    public CategoryGroup(){

    }

    @Override
    public int compareTo(@NotNull CategoryGroup group) {
        return this.sortOrder - group.sortOrder;
    }



}
